#ifndef _SYSTEM_CLOCK_C_
#define _SYSTEM_CLOCK_C_
/*********************************************************************************************************************/
#include "include/ca51f003_config.h"		
#include "include/ca51f003sfr.h"
#include "include/ca51f003xsfr.h"
#include "include/gpiodef_f003.h"
#include "include/system_clock.h"

#include "include/delay.h"
#include <intrins.h>
/*********************************************************************************************************************/


/***********************************************************************************
函数名  ：		Sys_Clk_Set_IRCH										 	
功能描述：		设置系统时钟为IRCH
输入参数：		无
返回值  ：		无
***********************************************************************************/
void Sys_Clk_Set_IRCH(void)
{
	CKCON |= IHCKE;											//IRCH时钟使能
	CKSEL = (CKSEL&0xF8) | CKSEL_IRCH;	//系统时钟切换到IRCH
}
/***********************************************************************************/



/***********************************************************************************
函数名  ：		Sys_Clk_Set_IRCL										 	
功能描述：		设置系统时钟为IRCL
输入参数：		无
返回值  ：		无
***********************************************************************************/
void Sys_Clk_Set_IRCL(void)
{
	CKCON |= ILCKE;											//IRCL时钟使能
	Delay_ms(1);						//使能IRCL后延时1ms，等待IRCL稳定
	CKSEL = (CKSEL&0xF8) | CKSEL_IRCL;	//系统时钟切换到IRCL	
}
/***********************************************************************************/



/***********************************************************************************
函数名  ：		Sys_Clk_Set_XOSCH										 	
功能描述：		设置系统时钟为XOSCH	
输入参数：		无
返回值  ：		无
***********************************************************************************/
void Sys_Clk_Set_XOSCH(void)
{
	GPIO_Init(P17F,P17_XOSCH_OUT_SETTING);
	GPIO_Init(P30F,P30_XOSCH_IN_SETTING);
	CKCON &= ~XHCS;
	CKCON |= XHCKE;	
	while(!(CKCON & XHSTA));
	CKSEL = (CKSEL&0xF8) | CKSEL_XOSCH;		
}


/***********************************************************************************
函数名  ：		Sys_Clk_Set_XCLK_IN										 	
功能描述：		设置系统时钟为XCLK	
输入参数：		无
返回值  ：		无
***********************************************************************************/
void Sys_Clk_Set_XCLK_IN(void)
{
	GPIO_Init(P30F,P30_CLKI_SETTING);
	CKCON |= XHCS;
	CKSEL = (CKSEL&0xF8) | CKSEL_XOSCH;		
}

/*********************************************************************************************************************/
#endif
